﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Interfaces;
using System.Collections;

namespace Model
{
    public class MedarbejderColl
    {
        // Attributter
        private List<Medarbejder> medarbejdere;

        // Konstruktør
        public MedarbejderColl()
        {
            medarbejdere = new List<Medarbejder>();
        }

        #region Operationer på medarbejder-objekter

        // Metode til at oprette et medarbejder-objekt
        public void OpretMedarbjeder(int medarbNr, string navn, string email, int tlfNr, string adresse, int postnr, string bynavn, bool aktiv)
        {
            Medarbejder medarbejder = new Medarbejder(medarbNr, navn, email, tlfNr, adresse, postnr, bynavn, aktiv);
            medarbejdere.Add(medarbejder);
        }

        // Metode til at finde et medarbejder-objekt
        public Medarbejder FindMedarbejder(int medarbNr)
        {
            foreach (Medarbejder medarb in medarbejdere)
            {
                if (medarbNr == medarb.MedarbNr)
                {
                    return medarb;
                }
            }

            return null;
        }

        // Metode til at finde et medarbejder-objekts nr udfra navnet
        public int GetMedarbNr(string navn)
        {
            foreach (Medarbejder m in medarbejdere)
            {
                if (navn == m.Navn)
                {
                    return m.MedarbNr;
                }
            }

            return 0;
        }
        
        // Metode til at redigere et medarbjeder-objekt
        public void RedigerMedarbejder(int medarbNr, string navn, string email, int tlfNr, string adresse, int postnr, string bynavn, bool aktiv)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            medarbejder.Navn = navn;
            medarbejder.Email = email;
            medarbejder.TlfNr = tlfNr;
            medarbejder.Adresse = adresse;
            medarbejder.Postnr = postnr;
            medarbejder.Bynavn = bynavn;
            medarbejder.Aktiv = aktiv;
        }

        // metode til at hente iterator der gennemløber medarbejder objekter
        public IEnumerator GetMedarbejdere()
        {
            return medarbejdere.GetEnumerator();
        }

        // kald af metode til at associere et projekt-objekt til et medarbejder-objekt
        public void TilknytProjekt(int medarbNr, Projekt etProjekt)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            medarbejder.TilknytProjekt(etProjekt);
        }

        // kald af metode til at hente liste af associerede projekter
        public IEnumerator GetMineMedarbejderProjekter(int medarbNr)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            return medarbejder.GetMineMedarbejderProjekter();
        }

        // kald af metode til at fjerne et associeret projekt-objekt
        public void FjernProjekt(int medarbNr, Projekt etProjekt)
        {
            Medarbejder medarbejder = FindMedarbejder(medarbNr);
            medarbejder.FjernProjekt(etProjekt);
        }

        #endregion
    }
}
